const chatService = require('../services/chatService')
const userMap = {}
const chat = {
    run (server) {
        const io = require('socket.io')(server, { path: '/room/1' });
        io.on('connection', (socket) => {
            console.log('a user connected', socket.id);
            socket.emit('onlineUser', userMap)

            // 某个用户连接 发送自己的用户信息
            socket.on('userConnect', (data) => {
                userMap[socket.id] = data
                console.log(userMap)
                // 给这个用户返回当前在线用户的列表
                socket.emit('onlineUser', userMap)
                // 给其他用户返回用户上线的信息
                socket.broadcast.emit('oneUserIn', [socket.id, data])
            });

            // 某个用户更新了自己的信息
            socket.on('userUpdateProfile', (data) => {
                userMap[socket.id] = data
                // 给所有用户发送更新的详情
                io.emit('userUpdateProfile', [socket.id, data])
            })

            // 客户端主动获取在线用户列表
            socket.on('getOnlineUser', () => {
                socket.emit('onlineUser', userMap)
            });

            // 接收到客户端发来的消息
            socket.on('clientMsg', (data) => {
                // 分发这个消息给所有客户端
                chatService.insertOneChat(data).then(result => {
                    result.socketId = socket.id
                    console.log('insertOneChat', result)
                    io.emit('serverMsg', result);
                }).catch(err => {
                    console.log(err)
                })
            });

            // 某个客户端断开了连接
            socket.on('disconnect', (reason) => {
                console.log('user disconnected', reason, socket.id);
                delete userMap[socket.id]
                // 给所有用户发送断开的消息
                io.emit('oneUserOut', { socketId: socket.id })
            });
        });
    }
}
module.exports = chat

